﻿using System;
using System.Collections.Generic;
using System.Web;
using FancyIdea.PingShui.Core.Dal;
using FancyIdea.PingShui.Core.Util;
using FancyIdea.PingShui.Core.DbHelper;
using System.Data;

namespace FancyIdea.PingShui.Core.Bll
{
    /// <summary>
    /// 职业 的摘要说明
    /// </summary>
    public class 职业 : HttpHandler
    {
        private void Save()
        {
            if (!CheckPower(CommUtil.GetValueByName(typeof(权限列表),
               权限列表.从业人员参数维护.ToString()).ToString()))
            {
                WriteReturnXml(-128, "无操作权限", null);
                return;
            }
            string method = GetStringValue("m");
            string 行业代码 = GetStringValue("行业代码");
            string 行业细目代码 = GetStringValue("行业细目代码");
            string 税务机关代码 = GetStringValue("税务机关代码");
            string 职业代码 = GetStringValue("职业代码");
            string 职业名称 = GetStringValue("职业名称");
            float 每月平均工资参考 = GetFloatValue("每月平均工资参考");
            float 预警幅度 = GetFloatValue("预警幅度");
            if (method.Equals("add"))
            {
                if (职业操作.AddProfession(行业代码, 行业细目代码, 税务机关代码, 职业代码, 职业名称,
                    每月平均工资参考, 预警幅度))
                {
                    WriteReturnXml(0, "", null);
                }
                else
                {
                    WriteReturnXml(-1, "添加失败", null);
                }
            }
            else
            {
                if (职业操作.UpdateProfession(行业代码, 行业细目代码, 税务机关代码, 职业代码, 职业名称,
                    每月平均工资参考, 预警幅度))
                {
                    WriteReturnXml(0, "", null);
                }
                else
                {
                    WriteReturnXml(-1, "修改失败", null);
                }
            }
        }

        private void List()
        {
            if (!CheckPower(CommUtil.GetValueByName(typeof(权限列表),
               权限列表.从业人员参数维护.ToString()).ToString()))
            {
                WriteReturnXml(-128, "无操作权限", null);
                return;
            }
            SimpleQueryBuilder SqlBuilder
          = new SimpleQueryBuilder()
          {
              FieldsString = @"a.*,b.税务机关名称,c.行业名称,d.行业细目名称",
              FromString = @"from 职业表 a 
left join 税务机关表 b on b.税务机关代码=a.税务机关代码 
left join 行业表 c on a.行业代码=c.行业代码 
left join 行业细目表 d on d.行业细目代码=a.行业细目代码",
              PageOrderString = "order by a.职业代码",
              FieldsStringForCount = "count(a.职业代码) as count"
          };
            List<string> con = new List<string>();
            con.Add("a.职业代码 like '%" + GetStringValue("职业代码") + "%'");
            con.Add("a.职业名称 like '%" + GetStringValue("职业名称") + "%'");
            SqlBuilder.Conditions = con.ToArray();
            int page = GetInt32Value("page") < 1 ? 1 : GetInt32Value("page");
            string sql = SqlBuilder.BuildQuerySql(page, Const.dataPerPage);
            string sql1 = SqlBuilder.BuildQueryStatisticSql();
            DataTable table = CmdUtil.ExcuteDataTable(sql);
            object o = CmdUtil.ExcuteScalar(sql1);
            int count = int.Parse(o == null ? "0" : o.ToString());
            int total = count % Const.dataPerPage == 0 ?
                count / Const.dataPerPage : (count / Const.dataPerPage) + 1;
            WriteListXml(0, "成功", count, Const.dataPerPage, total, page, table);
        }

        private void DropDown()
        {
            DataTable table = 职业操作.GetDropDownProfession();
            if (table != null && table.Rows.Count > 0)
            {
                WriteReturnXml(0, null, table);
            }
            else
            {
                WriteReturnXml(-1, "查询失败", table);
            }
        }

        private void Get()
        {
            string 职业代码 = GetStringValue("职业代码");
            if (string.IsNullOrEmpty("职业代码"))
            {
                WriteReturnXml(-1, "参数传入错误", null);
                return;
            }
            DataRow row = 职业操作.GetProfession(职业代码);
            if (row != null)
            {
                WriteReturnXml(0, "", row.Table);
            }
            else
            {
                WriteReturnXml(-1, "未查询到数据", null);
            }
        }

        private void Delete()
        {
            if (!CheckPower(CommUtil.GetValueByName(typeof(权限列表),
               权限列表.从业人员参数维护.ToString()).ToString()))
            {
                WriteReturnXml(-128, "无操作权限", null);
                return;
            }
            string 职业代码 = GetStringValue("职业代码");
            if (string.IsNullOrEmpty("职业代码"))
            {
                WriteReturnXml(-1, "参数传入错误", null);
                return;
            }
            if (职业操作.DeleteProfession(职业代码))
            {
                WriteReturnXml(0, "", null);
            }
            else
            {
                WriteReturnXml(-1, "删除失败", null);
            }
        }

        private void DeleteMulti()
        {
            if (!CheckPower(CommUtil.GetValueByName(typeof(权限列表),
               权限列表.从业人员参数维护.ToString()).ToString()))
            {
                WriteReturnXml(-128, "无操作权限", null);
                return;
            }
            string[] 职业代码 = GetStringsValue("职业代码");
            if (职业操作.DeleteProfession(职业代码))
            {
                WriteReturnXml(0, "", null);
            }
            else
            {
                WriteReturnXml(-1, "删除失败", null);
            }
        }
    }
}